There are several techniques for prolonging the effective lifetime of a storage media. For instance, an error-correcting code (ECC) can be used for each page or sector in order to correct errors. ECC encodes data in a way that a decoder can identify and correct errors in the data. For example, data are encoded by adding a number of redundant bits to them. When the data is reconstructed, the decoder examines the encoded message to correct any errors.
In order to simplify the design of ECC and to improve the error-correcting performance in most storage applications, the states of memory cells are usually assumed to be independent and identically distributed (i.i.d.). However, if the cell states vary with usage time, the error-correcting performance will degrade. In addition, the threshold voltage (Vt) distributions of storage media such as NAND flash memory are different for every single cell due to disturb, random telegraph noise, and charge leakage, and thus the i.i.d. property is not appropriate in real case, which leads to performance loss.